Device independent text suggestion service for an application hosting platform

ABSTRACT

A system, method and program product that provides user specific text suggestions across a set of hosted applications. A disclosed method includes: initiating a session with an application hosting platform for a user using a client device, wherein the platform includes a plurality of applications; accessing a dictionary associated with the user, wherein the dictionary provides text suggestions in response to inputted keyboard data and the dictionary is applicable for the user across each of the plurality of applications; deploying a selected application from the to the user at the client device; intercepting keyboard data entered by the user within the selected application; analyzing intercepted keyboard data and generating text suggestions specific to the user using the dictionary associated with the user; and outputting text suggestions within the selected application. The text suggestions are generated independently of capabilities of deployed application and operating systems running on the client device.

BACKGROUND OF THE DISCLOSURE

Most modern keyboard interfaces, e.g., deployed in smartphones, tablets,operating systems, applications, etc., support “text suggestions.” Textsuggestions are generated in response to a small number of charactersentered by a user. They may for instance appear in a pop-up window orwithin a defined region of a display with proposed words or phrasesintended to speed up the input of text. Text suggestions may includespelling corrections, predicted next words, autocompletes, etc.

Text suggestions generally rely on a local dictionary of words andphrases that are triggered by an inputted text pattern. For example, ifa user enters a misspelled word, one or more suggested words may bedisplayed that have the highest likelihood of user's actual intent.Similarly, if the user begins typing a sentence, one or more completedsentences may be displayed for the user to select. The dictionary can betrained over time as the user selects or ignores suggestions. Variousnatural language processing/machine learning technologies are known totrain and update text suggestion dictionaries. Regardless of theparticular technology utilized, the typing habits of the user (or groupof users) are imparted into the dictionary to offer suggestions havingthe greatest probability of usefulness. Text suggestions accordinglyprovide personalized typing shortcuts that simplify keyboard inputs fora given platform.

BRIEF DESCRIPTION OF THE DISCLOSURE

Aspects of this disclosure provide a system, method and program productthat provide personalized cross-platform text suggestions. Accordingly,a single dictionary is trained and maintained for a given user that isutilized across multiple applications deployed from an applicationhosting platform.

A first aspect of the disclosure provides an application hostingplatform comprising a memory and a processor coupled to the memoryconfigured to perform the steps of implementing an application managerto deploy a plurality of applications to remote client devices and atext suggestion service that provides user specific text suggestionsacross each of the applications. The text suggestion service isconfigured to access a dictionary associated with an identified user,wherein the dictionary provides text suggestions in response to inputtedkeyboard data and wherein the dictionary is applicable for theidentified user across each of the applications. The engine alsointercepts inputted keyboard data entered by the identified user withina deployed application on a remote client device and analyzesintercepted keyboard data from the deployed application to generate textsuggestions specific to the identified user using the dictionaryassociated with the identified user. Text suggestions are outputted forthe identified user within the deployed application. Text suggestionsare generated independently of existing capabilities of the deployedapplication and operating system running on the remote client device.

A second aspect discloses a method that provides user specific textsuggestions across a set of hosted applications. The method includesinitiating a session with an application hosting platform for a userusing a remote client device, wherein the application hosting platformincludes a plurality of applications and accessing a dictionaryassociated with the user, wherein the dictionary provides textsuggestions in response to inputted keyboard data and wherein thedictionary is applicable for the user across each of the plurality ofapplications. The method further deploys a selected application from theplurality of applications to the user at the remote client device andintercepts keyboard data entered by the user within the selectedapplication. Intercepted keyboard data from the user is intercepted andtext suggestions specific to the user are generated using the dictionaryassociated with the user. Text suggestions are then outputted for theuser within the selected application. Text suggestions are generatedindependently of existing capabilities of the selected application andoperating system running on the remote client device.

A third aspect of the disclosure provides a computer program productstored on a computer readable storage medium, which when executed by acomputing system, provides user specific text suggestions across a setof hosted applications. Included is program code for initiating asession with an application hosting platform for a user using a remoteclient device, wherein the application hosting platform includes aplurality of applications. Also provided is program code for accessing adictionary associated with the user, wherein the dictionary providestext suggestions in response to inputted keyboard data and wherein thedictionary is applicable for the user across each of the plurality ofapplications. Program code is further provided for deploying a selectedapplication from the plurality of applications for the user at theremote client device and program code for intercepting keyboard dataentered by the user within the selected application. Also provided isprogram code for analyzing intercepted keyboard data from the user andgenerating text suggestions specific to the user using the dictionaryassociated with the user and program code for outputting textsuggestions for the user within the selected application. The textsuggestions are generated independently of existing capabilities of theselected application and operating system running on the remote clientdevice.

The illustrative aspects of the present disclosure are designed to solvethe problems herein described and/or other problems not discussed.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features of this disclosure will be more readilyunderstood from the following detailed description of the variousaspects of the disclosure taken in conjunction with the accompanyingdrawings that depict various embodiments of the disclosure, in which:

FIG. 1 depicts an application hosting platform, in accordance with anillustrative embodiment.

FIG. 2 depicts a use case showing text suggestions generated on twodevices, in accordance with an illustrative embodiment.

FIG. 3 depicts a flow diagram of a method of implementing a textsuggestion service, in accordance with an illustrative embodiment.

FIG. 4 depicts a network configuration, in accordance with an embodimentof the invention.

The drawings are intended to depict only typical aspects of thedisclosure, and therefore should not be considered as limiting the scopeof the disclosure.

DETAILED DESCRIPTION OF THE DISCLOSURE

Embodiments of the disclosure provide technical solutions for providingconsistent user specific text suggestions across different deployedapplications running on heterogeneous client devices. In particular,text suggestions are generated independently of existing capabilities ofthe deployed applications and operating systems running on clientdevices. Previously, text suggestion engines were implemented asbuilt-in features of a particular resource, i.e., each uniqueapplication, operating system, device, etc., utilized its own dictionaryand analytics to generate suggestions. The present approach leveragesthe architecture of application hosting platforms, which host and deployapplications to end users via remote client devices, to provide userspecific text suggestions across heterogeneous devices runningapplications deployed from the application hosting platform.

FIG. 1 depicts an illustrative application hosting platform 10 configureto provide such functionality. Application hosting platform 10 may forexample comprise a cloud platform, a software as a service (SaaS)platform, an application server, a virtual application deploymentplatform or any other platform capable of deploying applications (i.e.,Apps) 42 to remote client devices 30, 32, 34. Remote client devices 30,32, 34 may for example comprise smart phones, desktop computers,Internet of Things (IoT) devices, thin clients, browsers, autonomoussystems, tablets, etc. In this example, application hosting platform 10includes an application manager 38 configured to store and deploy aplurality of different applications 42 via a gateway 36 to devices 30,32, 34 for a user (or users) 40. One such illustrative platform 10includes CITRIX® Virtual Apps and Desktop (CVAD), which is capable ofproviding on-demand applications and desktops (i.e., Apps 42) to anytype of device 30, 32, 34.

In addition to the application manager 38, platform 10 includes a textsuggestion service 18 that coordinates text suggestions for theplurality of applications 42 managed by application manager 38. In thisembodiment, text suggestion service 18 is substantially implementedwithin platform 10, however it is understood that some or all of thefunctionality may be distributed and implemented outside of the platform10, e.g., at the device level, or via a third party service. In thiscase, when a user 40 begins a session with the platform 10, the user 40is identified and a dictionary associated with the user 40 is accessedby the text suggestion service 18 from a set of user specificdictionaries, e.g., in dictionary database 44. Whenever an application(e.g., 42 a) is deployed to a device (e.g., device 30) for the user 40,text suggestion service 18 can provide text suggestions for the user 40as the user 40 interacts with a deployed application 42 a.

Text suggestion service 18 generally includes: a keyboard interceptionsystem 20 that intercepts keyboard data (i.e., characters) inputted bythe user 40 within a deployed application 42 a; a suggestion system 22that generates text suggestions for the user 40; a display manager 24that handles display of text suggestions within the deployed application42 a for the user 40; and a security system 26 that, e.g.,encrypts/decrypts the user's dictionary and avoids storing of passwordsand other sensitive data in the user's dictionary.

Keyboard interception system 20 can capture keyboard data from any fieldin a deployed application 42 a, including, e.g., plain or formattedtext, URLs, email addresses, text messages, email content, wordprocessing inputs, search queries, etc. Interception could beimplemented at either the platform 10 or at a device 30, 32, 34. In theexample shown, interception occurs at the platform 10, which may forexample be implemented with a local text echo feature utilizing a MSWindows® UIAutomation application programming interface (API). The APIprovides access to any user interface elements, including keyboardinputs. To implement the API, an event handler is registered with theoperating system (OS) environment, and as text change notifications arepushed to the event handler, the intercepted text is collected by thekeyboard interception system 20.

Other types of data such as handwriting strokes or audio input couldlikewise be intercepted, and for example be converted to text usingspeech recognition. Accordingly, for the purposes of this disclosure,the term keyboard inputs/data refers to any text based data whethergenerated directly from a keyboard or via some other source such as anatural language processing system.

In an alternative embodiment, keyboard inputs could be collecteddirectly by the device 30, 32, 34 and forwarded back to the platform 10without the use of an OS event handler. In an SaaS platform, SaaSapplications could generate text suggestions by “hooking” keyboardinputs when running inside an embedded-browser, and utilized storeddictionaries at the application or URL level. A hook is a mechanism bywhich an application can intercept events, such as messages, mouseactions, and keystrokes. A function that intercepts a particular type ofevent is implemented with a hook procedure that can act on each event itreceives. For example, WH_KEYBOARD is a Microsoft Windows procedure forobtaining keyboard inputs.

As keyboard inputs are collected, suggestion system 22 searches formatching character strings in the user's dictionary and returns textsuggestions. Initially, a default dictionary may be provisioned for eachuser and over time, each dictionary can be trained and personalized(i.e., updated) for the given user. For instance, whenever a userresponds to (e.g., selects, replaces, adds to, or ignores) a textsuggestion, the action can be analyzed and used to enhance futuresuggestions within the dictionary. Any type of predictive analyticsengine may be used to train the user's dictionary to, e.g., prioritizeand sort suggestions based on context, weightings, time of usage, etc.Further, dictionaries 44 can be updated or implemented manually orautomatically with administrator inputs, e.g., to include common termsused within an organization, or common terms used for specified roleswithin an organization. Still further, the user 40 can manually entersuggestions that should get triggered in response to inputtedcharacters.

In one embodiment, multiple instances of the user's dictionary may existon different devices or within different applications. In such a case,the dictionaries instances for a given user would be synchronized on aregular basis.

Once one or more text suggestions are determined by the suggestionsystem 22, display manager 24 facilitates the presentation of thesuggestions with the deployed application 42 a. In some cases, thedeployed application 42 a may have a predefined region or procedure fordisplaying suggestions (e.g., within a bar above the keyboard,immediately after the display of inputted characters, etc.). In caseswhere the application 42 a does not have a predefined region orprocedure, or the display manager 24 does not have access to thepredefined region, an overlay window can be generated near the inputfield. This allows visual suggestion display elements to float overother visual elements. Display manager 24 could likewise be implementedat the platform level or device level. Implementing displays at theplatform level may provide a simpler, more uniform presentation.Implementing displays at the device level may provide a greater userexperience (UX).

In addition to the above, a security system 26 may be provisioned toensure that user specific dictionaries are loaded securely during asession, e.g., using OS level encryption facilities such as Keychain,DPAPI, Android Keystore, etc. Furthermore, each dictionary could bestored in an encrypted fashion in database 44 when not used.Access/decryption may be achieved with a passphrase entered by the user40 at the beginning of a session. Furthermore, security filtering may beutilized to ensure passwords and other sensitive data are not stored inthe dictionary.

FIG. 2 depicts an illustrative use case in which text suggestion service18 is implemented across multiple devices and applications. Textsuggestions for a user are generated independently of the capabilitiesof the application or operating system running on the device, and sharea single dictionary 70 for the user. In this example, a first device 50(e.g., a smart phone) is shown running a first deployed application 52(e.g., an android based messaging application) and a second device 60(e.g., a desktop computer) is shown running a second deployedapplication 62 (e.g., a Windows based search facility). On the firstdevice 50, the user has initiated a session and entered the textcharacters “in” within a message field 54 of the first deployedapplication 52. Text suggestions 56 are generated based on the userspecific dictionary 70 and displayed by service 18 on the bar above thekeyboard, with the suggestion “invoice” being highlighted as the mostlikely intent of the user. In this case, service 18 is utilizing theexisting UX display region in the first application 52 to showsuggestions 56. On the second device 60, the same user has initiated asecond session and entered the same text characters “in” into a searchfield 64. In this case, the second deployed application 62 includes anexisting facility for generating text suggestions, which is shown indrop down window 66. In addition, service 18 causes a separate overlaywindow 68 to be displayed, and because a common dictionary 70 isutilized, displays the same text suggestion “invoice” as previouslygenerated by the service 18 on the first device 50. In this case, if theuser clicks on the suggested text “invoice” in the separate overlaywindow 68 generated by service 18, the suggested text “invoice” isinputted back into the deployed application 62.

The overlay window 68 may be a non-editable text window or an overlaywindow generated by the operating system, i.e., a window managerrendered on either the client or the server. When the overlay window ishandled by the server, an overlay region will be sent as image to theclient along with remote graphics data. When the user clicks on theoverlay region, the server detects the overlay and inputs a scan codecorresponding to the text displayed to the application. When the overlaywindow is handled by the client, and user clicks on the overlay region,scan codes are sent through the keyboard virtual channel. Duringinterception, characters already entered by the user to the applicationwill be captured. After the user clicks on the overlay region, theremaining scan codes for the selected text are sent to the application.

FIG. 3 depicts an illustrative method for implementing text suggestionservice 18 (with reference to FIG. 1 ). At A1, a user 40 begins asession with the application hosting platform 10 from a remote clientdevice 30, and at A2, the text suggestion service 18 accesses adictionary associated with the user 40 from dictionary database 44. AtA3, the user 40 interacts with a deployed application 42 a on theirdevice 30, and at A4, the user 40 enters keyboard inputs in a field ofthe deployed application 42 a. At A5, the text suggestion service 18intercepts the keyboard inputs and generates and displays suggestions tothe deployed application 42 a at A6. At A7, the user 40 responds to thesuggestions, e.g., by selecting a suggestion, adding a new suggestion,replacing the suggestion, ignoring the suggestion, etc., and at A10 theuser's dictionary is updated based on the user's response. Updating ofthe dictionary may occur immediately based on the response, or responsesmay be saved for analysis at a later time. Assuming the user 40 does notend the session at A8, the process loops back to A3 where the user 40continues to interact with the deployed application 42 a.

Sometime after the user 40 ends the session (or concurrently therewith),the user 40 may begin a new session with same or differentdevice/deployed application at A9. The process loops back to A2, wherethe text suggestion service 18 re-accesses the dictionary associatedwith the user 40 and the process repeats. Note that the dictionary mayinclude updates resulting from previous sessions.

Referring to FIG. 4 , an illustrative network environment 100 isdepicted. Network environment 100 may include one or more clients102(1)-102(n) (also generally referred to as local machine(s) 102 orclient(s) 102) in communication with one or more servers 106(1)-106(n)(also generally referred to as remote machine(s) 106 or server(s) 106)via one or more networks 104(1)-104 n (generally referred to asnetwork(s) 104). In some embodiments, a client 102 may communicate witha server 106 via one or more appliances 110(1)-110 n (generally referredto as appliance(s) 110 or gateway(s) 110).

Although the embodiment shown in FIG. 4 shows one or more networks 104between clients 102 and servers 106, in other embodiments, clients 102and servers 106 may be on the same network 104. The various networks 104may be the same type of network or different types of networks. Forexample, in some embodiments, network 104(1) may be a private networksuch as a local area network (LAN) or a company Intranet, while network104(2) and/or network 104(n) may be a public network, such as a widearea network (WAN) or the Internet. In other embodiments, both network104(1) and network 104(n) may be private networks. Networks 104 mayemploy one or more types of physical networks and/or network topologies,such as wired and/or wireless networks, and may employ one or morecommunication transport protocols, such as transmission control protocol(TCP), internet protocol (IP), user datagram protocol (UDP) or othersimilar protocols.

As shown in FIG. 4 , one or more appliances 110 may be located atvarious points or in various communication paths of network environment100. For example, appliance 110(1) may be deployed between two networks104(1) and 104(2), and appliances 110 may communicate with one anotherto work in conjunction to, for example, accelerate network trafficbetween clients 102 and servers 106. In other embodiments, the appliance110 may be located on a network 104. For example, appliance 110 may beimplemented as part of one of clients 102 and/or servers 106. In anembodiment, appliance 110 may be implemented as a network device such asCitrix networking (formerly NetScaler®) products sold by Citrix Systems,Inc. of Fort Lauderdale, Fla.

As shown in FIG. 4 , one or more servers 106 may operate as a serverfarm 108. Servers 106 of server farm 108 may be logically grouped, andmay either be geographically co-located (e.g., on premises) orgeographically dispersed (e.g., cloud based) from clients 102 and/orother servers 106. In an embodiment, server farm 108 executes one ormore applications on behalf of one or more of clients 102 (e.g., as anapplication server), although other uses are possible, such as a fileserver, gateway server, proxy server, or other similar server uses.Clients 102 may seek access to hosted applications on servers 106.

As shown in FIG. 4 , in some embodiments, appliances 110 may include, bereplaced by, or be in communication with, one or more additionalappliances, such as WAN optimization appliances 112(1)-112(n), referredto generally as WAN optimization appliance(s) 112. For example, WANoptimization appliance 112 may accelerate, cache, compress or otherwiseoptimize or improve performance, operation, flow control, or quality ofservice of network traffic, such as traffic to and/or from a WANconnection, such as optimizing Wide Area File Services (WAFS),accelerating Server Message Block (SMB) or Common Internet File System(CIFS). In some embodiments, appliance 205 may be a performanceenhancing proxy or a WAN optimization controller. In one embodiment,appliance 112 may be implemented as Citrix SD-WAN products sold byCitrix Systems, Inc. of Fort Lauderdale, Fla.

In described embodiments, clients 102, servers 106, and appliances 110and 112 may be deployed as and/or executed on any type and form ofcomputing device, such as any desktop computer, laptop computer, ormobile device capable of communication over at least one network andperforming the operations described herein. For example, clients 102,servers 106 and/or appliances 110 and 112 may each correspond to onecomputer, a plurality of computers, or a network of distributedcomputers such as computing system 10 shown in FIG. 1 .

Application Hosting Platform 10 (FIG. 1 ) may for example be implementedby a cloud computing environment that employs a network of remote,hosted servers to manage, store and/or process data, and may generallybe referred to, or fall under the umbrella of, a “network service.” Thecloud computing environment may include a network of interconnectednodes, and provide a number of services, for example hosting deploymentof customer-provided software, hosting deployment of provider-supportedsoftware, and/or providing infrastructure. In general, cloud computingenvironments are typically owned and operated by a third-partyorganization providing cloud services (e.g., Amazon Web Services,Microsoft Azure, etc.), while on-premises computing environments aretypically owned and operated by the organization that is using thecomputing environment. Cloud computing environments may have a varietyof deployment types. For example, a cloud computing environment may be apublic cloud where the cloud infrastructure is made available to thegeneral public or particular sub-group. Alternatively, a cloud computingenvironment may be a private cloud where the cloud infrastructure isoperated solely for a single customer or organization or for a limitedcommunity of organizations having shared concerns (e.g., security and/orcompliance limitations, policy, and/or mission). A cloud computingenvironment may also be implemented as a combination of two or morecloud environments, at least one being a private cloud environment andat least one being a public cloud environment. Further, the variouscloud computing environment deployment types may be combined with one ormore on-premises computing environments in a hybrid configuration.

The foregoing drawings show some of the processing associated accordingto several embodiments of this disclosure. In this regard, each drawingor block within a flow diagram of the drawings represents a processassociated with embodiments of the method described. It should also benoted that in some alternative implementations, the acts noted in thedrawings or blocks may occur out of the order noted in the figure or,for example, may in fact be executed substantially concurrently or inthe reverse order, depending upon the act involved. Also, one ofordinary skill in the art will recognize that additional blocks thatdescribe the processing may be added.

As will be appreciated by one of skill in the art upon reading thefollowing disclosure, various aspects described herein may be embodiedas a system, a device, a method or a computer program product (e.g., anon-transitory computer-readable medium having computer executableinstruction for performing the noted operations or steps). Accordingly,those aspects may take the form of an entirely hardware embodiment, anentirely software embodiment, or an embodiment combining software andhardware aspects. Furthermore, such aspects may take the form of acomputer program product stored by one or more computer-readable storagemedia having computer-readable program code, or instructions, embodiedin or on the storage media. Any suitable computer readable storage mediamay be utilized, including hard disks, CD-ROMs, optical storage devices,magnetic storage devices, and/or any combination thereof.

Application hosting platform 10 (FIG. 1 ) may comprise any type ofcomputing device that for example includes at least one processor 12,memory, an input/output (I/O) 14, e.g., one or more I/O interfacesand/or devices, and a communications pathway or bus 16. In general, theprocessor(s) execute program code which is at least partially fixed inmemory. While executing program code, the processor(s) can process data,which can result in reading and/or writing transformed data from/tomemory and/or I/O for further processing. The pathway provides acommunications link between each of the components in the computingdevice. I/O can comprise one or more human I/O devices, which enable auser to interact with the computing device and the computing device mayalso be implemented in a distributed manner such that differentcomponents reside in different physical locations.

Memory 20 may comprise volatile memory (e.g., RAM) and/or non-volatilememory e.g., one or more hard disk drives (HDDs) or other magnetic oroptical storage media, one or more solid state drives (SSDs) such as aflash drive or other solid state storage media, one or more hybridmagnetic and solid state drives, and/or one or more virtual storagevolumes, such as a cloud storage, or a combination of such physicalstorage volumes and virtual storage volumes or arrays thereof, etc. I/O14 may include a user interface, a graphical user interface (GUI) (e.g.,a touchscreen, a display, etc.) and one or more input/output (I/O)devices (e.g., a mouse, a keyboard, etc.). Computing system 10 typicallymay also include an operating system, additional applications, data,peripherals, etc. Computing system 10 is shown merely as an example, asclients, servers and/or appliances and may be implemented by anycomputing or processing environment and with any type of machine or setof machines that may have suitable hardware and/or software capable ofoperating as described herein.

Processor(s) 12 may be implemented by one or more programmableprocessors executing one or more computer programs to perform thefunctions of the system. As used herein, the term “processor” describesan electronic circuit that performs a function, an operation, or asequence of operations. The function, operation, or sequence ofoperations may be hard coded into the electronic circuit or soft codedby way of instructions held in a memory device. A “processor” mayperform the function, operation, or sequence of operations using digitalvalues or using analog signals. In some embodiments, the “processor” canbe embodied in one or more application specific integrated circuits(ASICs), microprocessors, digital signal processors, microcontrollers,field programmable gate arrays (FPGAs), programmable logic arrays(PLAs), multi-core processors, or general-purpose computers withassociated memory. The “processor” may be analog, digital ormixed-signal. In some embodiments, the “processor” may be one or morephysical processors or one or more “virtual” (e.g., remotely located or“cloud”) processors.

In described embodiments, a first computing device may execute anapplication on behalf of a user of a client computing device, mayexecute a virtual machine, which provides an execution session withinwhich applications execute on behalf of a user or a client computingdevice, such as a hosted desktop session, may execute a terminalservices session to provide a hosted desktop environment, or may provideaccess to a computing environment including one or more of: one or moreapplications, one or more desktop applications, and one or more desktopsessions in which one or more applications may execute.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the disclosure.As used herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof. “Optional” or “optionally” means thatthe subsequently described event or circumstance may or may not occur,and that the description includes instances where the event occurs andinstances where it does not.

Approximating language, as used herein throughout the specification andclaims, may be applied to modify any quantitative representation thatcould permissibly vary without resulting in a change in the basicfunction to which it is related. Accordingly, a value modified by a termor terms, such as “about,” “approximately” and “substantially,” are notto be limited to the precise value specified. In at least someinstances, the approximating language may correspond to the precision ofan instrument for measuring the value. Here and throughout thespecification and claims, range limitations may be combined and/orinterchanged, such ranges are identified and include all the sub-rangescontained therein unless context or language indicates otherwise.“Approximately” as applied to a particular value of a range applies toboth values, and unless otherwise dependent on the precision of theinstrument measuring the value, may indicate +/−10% of the statedvalue(s).

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present disclosure has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the disclosure in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the disclosure. Theembodiment was chosen and described in order to best explain theprinciples of the disclosure and the practical application, and toenable others of ordinary skill in the art to understand the disclosurefor various embodiments with various modifications as are suited to theparticular use contemplated.

What is claimed is:
 1. An application hosting platform, comprising: amemory; and a processor coupled to the memory and configured to:virtually deploy an application running on the application hostingplatform to a remote client device; access a dictionary associated withan identified user, the dictionary providing user specific textsuggestions across each of a plurality of applications and thedictionary being applicable for the identified user across the pluralityof applications; receive, at the application hosting platform, inputtedkeyboard data as keystrokes are entered by the identified user intodisplayed fields of the application on the remote client device;intercept, at the application hosting platform, inputted keyboard data;generate, based on the intercepted inputted keyboard data, textsuggestions specific to the identified user using the dictionaryassociated with the identified user; and output the text suggestions tothe identified user.
 2. The application hosting platform of claim 1,wherein the platform includes one of: a cloud platform, a software as aservice (SaaS) platform, a server, and a virtual application deploymentplatform.
 3. The application hosting platform of claim 1, whereinintercepting keyboard data includes utilizing an event handler thatinterfaces with an operating system running the deployed application. 4.The application hosting platform of claim 1, wherein interceptingkeyboard data includes receiving keyboard inputs directly from theremote client device.
 5. The application hosting platform of claim 1,wherein the text suggestion service retrieves the dictionary for theidentified user in response to the identified user beginning a newsession.
 6. The application hosting platform of claim 1, wherein thetext suggestion dictionary for the identified user is updated andpersonalized based on responses by the identified user with respect toany of the plurality of applications independently of existingcapabilities of the plurality of applications and of the remote clientdevice.
 7. The application hosting platform of claim 1, wherein textsuggestions for the user are output in an overlay window that appearsover the deployed application on the remote client device.
 8. A methodthat provides user specific text suggestions across a set of hostedapplications, comprising: initiating a session with an applicationhosting platform for a user using a remote client device, wherein theapplication hosting platform includes a plurality of applications;accessing a dictionary associated with the user, wherein the dictionaryprovides text suggestions in response to inputted keyboard data andwherein the dictionary is applicable for the user across the pluralityof applications; virtually deploying a selected application from theplurality of applications to the user at the remote client device;receiving, at the application hosting platform, inputted keyboard dataas keystrokes are entered by the identified user into displayed fieldsof the selected application on the remote client device; intercepting,at the application hosting platform, the inputted keyboard data;generating, based on the inputted keyboard data, text suggestionsspecific to the user using the dictionary associated with the user; andoutputting text suggestions for the user of the selected application. 9.The method of claim 8, wherein the application hosting platform includesone of: a cloud platform, a software as a service (SaaS) platform, aserver, and a virtual application deployment platform.
 10. The method ofclaim 8, wherein intercepting keyboard data includes utilizing an eventhandler that interfaces with an operating system running the selectedapplication.
 11. The method of claim 8, wherein intercepting keyboarddata includes receiving text directly from the remote client device. 12.The method of claim 8, wherein the dictionary associated with the useris updated and personalized based on responses of the user while engagedwith any of the plurality of applications independently of existingcapabilities of the applications and of the remote client device. 13.The method of claim 12, wherein the text suggestions are generatedindependently of existing capabilities of the selected application andoperating system running on the remote client device.
 14. The method ofclaim 8, wherein text suggestions for the user are output in an overlaywindow that appears over the selected application on the remote clientdevice.
 15. A computer program product stored on a non-transitorycomputer readable storage medium, which when executed by a computingsystem, provides user specific text suggestions across a set of hostedapplications, wherein the computer program product comprises: programcode for initiating a session with an application hosting platform for auser using a remote client device, wherein the application hostingplatform includes a plurality of applications; program code foraccessing a dictionary associated with the user, wherein the dictionaryprovides text suggestions in response to inputted keyboard data andwherein the dictionary is applicable for the user across each of theplurality of applications; program code for virtually deploying aselected application from the plurality of applications for the user atthe remote client device; program code for receiving, at the applicationhosting platform, inputted keyboard data as keystrokes are entered bythe identified user into displayed fields of the selected application onthe remote client device; program code for intercepting, at theapplication hosting platform, inputted keyboard data; program code forgenerating, based on the inputted keyboard data, text suggestionsspecific to the user using the dictionary associated with the user; andprogram code for outputting text suggestions for the user of theselected application.
 16. The program product of claim 15, wherein theapplication hosting platform includes one of: a cloud platform, asoftware as a service (SaaS) platform, a server, and a virtualapplication deployment platform.
 17. The program product of claim 15,wherein the text suggestions are generated independently of existingcapabilities of the selected application and operating system running onthe remote client device.
 18. The program product of claim 15, whereinthe program code for intercepting keyboard data includes receiving datadirectly from the remote client device.
 19. The program product of claim15, wherein the dictionary associated with the user is updated andpersonalized based on responses of the user while engaged with any ofthe plurality of applications independently of existing capabilities ofthe applications and of the remote client device.
 20. The programproduct of claim 19, wherein the dictionary associated with the user isfurther updatable based on inputs from an administrator.